-- @preview-file on clear

-- Script/MathUtils.lua (新增数学工具模块)
-- 数学工具函数集合

local MathUtils = {}

-- 数学符号函数
function MathUtils.sign(x)
    if x > 0 then return 1
    elseif x < 0 then return -1
    else return 0 end
end

-- 线性插值
function MathUtils.lerp(a, b, t)
    return a + (b - a) * t
end

-- 钳制数值在最小最大值之间
function MathUtils.clamp(value, min, max)
    if value < min then return min end
    if value > max then return max end
    return value
end

-- 角度转弧度
function MathUtils.deg2rad(degrees)
    return degrees * math.pi / 180
end

-- 弧度转角度
function MathUtils.rad2deg(radians)
    return radians * 180 / math.pi
end

-- 计算两点间距离
function MathUtils.distance(x1, y1, x2, y2)
    return math.sqrt((x2 - x1)^2 + (y2 - y1)^2)
end

-- 随机范围
function MathUtils.randomRange(min, max)
    return min + math.random() * (max - min)
end

-- 判断数值是否接近
function MathUtils.approximately(a, b, threshold)
    threshold = threshold or 0.001
    return math.abs(a - b) < threshold
end

-- 映射数值范围
function MathUtils.map(value, fromMin, fromMax, toMin, toMax)
    return toMin + (value - fromMin) * (toMax - toMin) / (fromMax - fromMin)
end

return MathUtils